The present invention concerns design and manufacturing of integrated circuits and pertains particularly to a method of scaling table based cell library timing models for process, temperature and power supply.
When designing an integrated circuit, it is generally desirable to simulate the functioning of logic circuitry within the integrated circuit. In order to accurately access the performance of the circuitry, it is desirable that the logic simulation of logic include an accurate assessment of timing delays through the circuitry, at least in the critical paths.
In general, timing delays through circuitry are caused by propagation delays through and between logic cells which comprise the circuitry. The actual amount of propagation delay through and between logic cells is generally dependent on various capacitances within and between the logic cells, as well as the current available to charge or discharge the capacitances.
When developing a timing model, it is important, therefore, to take into account the time delay introduced by charging and discharging the input capacitance of logic cells. This time delay is directly affected by the input current available to charge or discharge the input capacitance to the logic cell. This input current, in turn, is directly affected by the fan out of the output of the logic cell providing the input current.
Timing models for logic circuits are often stored in a cell library used to design the logic circuit. The timing model is used in event driven simulation and synthesis of circuits constructed from the elements of the library. The timing model generally describes the cell delay between each input pin and output pin transition. There is often a separate timing model for each cell in the library.
For submicron circuits, an accurate cell delay model generally depends upon the ramp (or transition time) of the input pin for each cell in the library. The ramp is the time it takes for the voltage of the node to pass between two pre-specified values. Generally, the model also describes the ramp of the output pin. The output ramp model depends upon the load on the output pin. In addition, for some cells, the output ramp model also depends upon the input ramp.
In a tabular cell delay model, the information is stored in a list of output load indices (Load1, Load2, Load3, Load4, . . . , Loadm) and in a list of input ramp indices (IR1, IR2, IR3, IR4, . . . , IRn), and a two-dimensional xe2x80x9cmxe2x80x9d by xe2x80x9cnxe2x80x9d array of cell delay values. For each input ramp index and each load index, there is listed an output ramp and a cell delay. This is done, for example, in a separate table for each of the output ramp and the cell delay. Depending upon the implementation, the input ramp indices and the output load indices may or may not be shared by the table for the output ramp and the table for the cell delay. For cells where the output ramp does not depend upon the input ramp, the table for the output ramp is simplified so that for each load index there is listed an output ramp.
The particular values chosen for the indices may vary depending upon the cell used. Also, for a particular cell, the particular values chosen for the indices may vary depending upon the input pin/output pin combination that a particular table represents.
For each transition of every cell in a cell library, quantitative information about the delay and output ramp is for a fixed process, power supply, and temperature, (P, V, T).
For example, in a two dimensional array of delays, each entry is listed as Delay [j,k]. The numerical value of Delay [j, k] represents the value of the delay between input and output of the transition when the load on the output node is equal to Loadj and the rise or fall time of the input node voltage is equal to IRk. In a two dimensional array of output ramps, each output ramp is listed as OR [j,k]. The numerical value of OR [j,k] represents the value of the output ramp of the transition when the load on the output node is equal to Loadj and the rise or fall time of the input node voltage is equal to IRk.
For other values of output load and/or input ramp different from the values in the list of indices, the value of delay and output ramp can be approximated by interpolation of the table values (or extrapolation, if the input ramp and/or output load are outside the range of the indices).
Typically in the industry the values of delay and output ramp are determined by running SPICE simulations for each transition of every cell in the library and to obtain the values of delay and output ramp from the output of the SPICE simulations. The SPICE simulations are run at each pair of values for input ramp and output load in the list of indices. This process is known as characterization. A complete library characterization at a fixed P, V, T may involve on the order of several hundred thousand SPICE simulations.
It is necessary to have cell library timing models at a variety of P, V, T conditions; at minimum three sets of conditions (typical, best case, and worst case) are required. It is desirable, however, to obtain accurate cell library models at a variety of P, V, T conditions without multiplying the characterization effort by the number of sets of P, V, T conditions needed.
It is therefore desirable to do a complete library characterization at a baseline set of P, V, T conditions and to accurately extrapolate these results to other P, V, T conditions.
In one prior art model, the delay and output ramp are described as explicit parametric formulas of input ramp, output load, process, power supply, and temperature. P, V, T. Variations are described by evaluating the formulas at different values of P, V, T. See, R. W. Phelps, Advanced Library Characterization for High Performance ASIC, Proceedings of the IEEE International Asic Conference, 1991, pp. P15-3.1 through P15-3.4. However, characterization of the model for a fixed set of P, V, T conditions required 21 SPICE simulations for each transition. Characterization of the P, V, and T variations required 630 SPICE simulations for each transition. Incorporating P, V, T variations was accomplished at a cost of a factor of 30 in characterization effort.
In another prior art model, the delay and output ramp were described as explicit parametric formulas of input ramp and output load. P, V, T variations are described by 13 independent scaling factors. Each of the parameters of the model is multiplied by a scaling factor which depends upon P, V, and T. The scaling factors are the same for all cells and transitions. See U.S. Pat. No. 5,559,715 issued to Michael N. Misheloff for Timing Model and Characterization System for Logic Simulation of Integrated Circuits Which Takes into Account Process, Temperature and Power Supply Variations. While this method was effective, it did not become an industry standard and there is currently no software support for the model.
In another prior art model, P, V, T variations are incorporated using four independent scaling factors. All values of Delay [j, k] for rising output are multiplied by a scaling factor. All values of Delay [j, k] for falling output are multiplied by a second scaling factor. All values of OR [j, k] for rising output are multiplied by a third scaling factor. All values of OR [j, k] for falling output are multiplied by a fourth scaling factor. Each of the scaling factors depends upon P, V, and T. The scaling factors do not depend upon the value of the input ramp and output load. See the Synopsis Design Compiler User Manual available on the internet at (www.Synopsys.com) and from Synopsis, Inc. having a business address of 700 E. Middlefield Road, Mountain View, Calif. 94043-4033. However, this approach does not give sufficiently accurate results for many applications.
In accordance with a preferred embodiment of the present invention, a method is presented for generating a timing model for a logic cell. Output load indices (Load1, Load2, . . . ,Loadm) are selected which specify output load for the first logic cell. Input ramp indices (IR1, IR2, . . . ,IRn) are selected which specify input ramp for the first logic cell. Baseline output ramp values (ORbl [j,k]) are generated for each output load index (Loadj) and input ramp index (IRk) pair. The numerical value of ORbl [j,k] represents the value of the delay of the transition at the baseline P, V, T conditions when the load on the output node is equal to Loadj and the rise or fall time of the input node voltage is equal to IRk. In order to take into account process, power and temperature variations, scaling factors are used to scale the indices. For example these scaling factors can be utilized for many different logic cells in a cell library.
In one preferred embodiment, the output load indices are scaled by a first scaling factor (xcex). The input ramp indices are scaled by a second scaling factor (xcfx81). Scaled output ramp values (ORscaled [j,k]) are generated for each scaled output load index and scaled input ramp index pair. For example, a third scaling factor (xcex3) is used to generate the scaled output ramp values (ORscaled [j,k]), using the following equation:
ORscaled[j, k]=ORbl[j, k]+(xcex3xe2x88x921)*ORbl[0, 1].
The numerical value of ORscaled [j, k] represents the value of the output ramp of the transition at the new P, V, T conditions when the load on the output node is equal to xcex*Loadj and the rise or fall time of the input node is equal to xcfx81*IRk.
For the equation above, baseline output ramp value at zero load and minimum input ramp (ORbl [0,1]) is approximated using the following equation:
ORbl[0, 1]=ORbl[1, 1]xe2x88x92(Load1/(Loadmxe2x88x92Load1))*{ORbl[m, 1]xe2x88x92ORbl[1, 1]}.
Alternatively, the scaled output ramp as a function of output load and input ramp ORscaled(Output Load, Input ramp) can be calculated in accordance with the following equation:
ORscaled(Output Load, Input ramp)=(xcex3xe2x88x921)*ORbl[0, IR1]+ORbl(Output Load/xcex, Input Ramp/xcfx81).
In the preferred embodiment, the value of the first scaling factor varies dependent upon process, power and temperature variances. The value of the second scaling factor varies dependent upon process, power and temperature variance. The value of the third scaling factor also varies dependent upon process, power and temperature variance. Further, the value of the first scaling factor additionally varies based on whether voltage at an output node of the logic cell is rising or falling. The value of the second scaling factor also varies based on whether voltage at the output node of the logic cell is rising or falling. The value of the third scaling factor also varies based on whether voltage at the output node of the logic cell is rising or falling.
Similarly, in accordance with a preferred embodiment of the present invention, delay values can be generated as well. Specifically, baseline delay values (Delaybl [j, k]) are generated for each output load index (Loadj) and input ramp index (IRk) pair. The numerical value of Delaybl [j, k] represents the value of the delay of the transition at the baseline P, V, T conditions when the load on the output node is equal to Loadj and the rise or fall time of the input node voltage is equal to IRk.
Scaled delay values (Delayscaled [j, k]) are generated for each scaled output load index and scaled input ramp index pair. The numerical value of Delayscaled [j, k] represents the value of the delay of the transition at the new P, V, T conditions when the load on the output node is equal to xcex*Loadj and the rise or fall time of the input node voltage is equal to xcfx81*IRk.
For example, in order to generate the scaled delay values (Delayscaled [j, k]), new values (Dt0bl [j, k]) are generated for each output load index (Loadj) and input ramp index (IRk) pair based on the baseline delay values (Delaybl [j, k]), the baseline output ramp values (ORbl [j,k]), and a factor (xcfx86) which takes into account non-linearity of voltage waveforms within the logic cell. This may be done in accordance with the following equation:
Dt0bl[j, k]=Delaybl[j, k]+IRk/2xe2x88x92xcfx86*ORbl[j, k]/2.
A third scaling factor (xcex1) is used to generate scaled new values (Dt0scaled [j, k]), for example, using the following equation:
xe2x80x83Dt0scaled[j, k]=Dt0bl[j, k]+(xcex1xe2x88x921)*Dt0bl[0, 0].
The scaled delay values (Delayscaled [j, k]) for each scaled output load index and scaled input ramp index pair are then generated using the following equation:
Delayscaled[j, k]=Dt0scaled[j, k]xe2x88x92xcfx81*IRk/2+xcfx86*ORscaled[j, k]/2.
The numerical value of Delayscaled [j, k] represents the value of the delay of the transition at the new P, V, T conditions when the load on the output node is equal to xcex*Loadj and the rise or fall time of the input node voltage is equal to xcfx81*IRk.
In a preferred embodiment of the present invention, the baseline new value at zero load and zero input ramp (Dt0bl [0, 0]) is approximated using the following equation:
Dt0bl[0, 0]=Dt0bl[1, 1]xe2x88x92(Load1/(Loadmxe2x88x92Load1))*{Dt0bl[m, 1]xe2x88x92Dt0bl[1, 1]}xe2x88x92(IR1/(IRnxe2x88x92IR1))*{Dt0bl[m, n]xe2x88x92Dt0bl[m, 1]}.
Dt0bl [0, 0] must be obtained before Dt0scaled [j, k] is calculated.
In an alternative embodiment, the scaled delay values (Delayscaled (Output Load, Input ramp) are generated for each scaled output load index and scaled input ramp index pair using the following equation:
Delayscaled(Output Load, Input ramp)=(xcfx86/2)*(xcex3xe2x88x921)*ORbl[0, IR1]+(xcex1xe2x88x921)*Dt0bl[0, 0]+((1/xcfx81xe2x88x921)/2)*Input Ramp+Delaybl(Output Load/xcex, Input Ramp/xcfx81).
The present invention provides an accurate and efficient way to scale table based cell library timing models in order to take into account process, temperature and power supply variations.